package com.xzy.sms.web.system.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import com.google.common.collect.Lists;
import com.xzy.sms.web.domain.entity.User;
import com.xzy.sms.web.system.dao.PermUserDao;
import com.xzy.sms.web.system.entity.PermUser;

/**
 * 权限用户关系service类
 * @author macong
 * @since 1.0
 * @version 2014-4-1 macong
 */
@Component
@Transactional
public class PermUserService {
    
    /** PermUserDao */
    @Autowired
    private PermUserDao permUserDao;
    
    /**
     * 批量保存
     * @param lstPermUser 集合数据
     */
    private void save(List<PermUser> lstPermUser) {
        permUserDao.saveAll(lstPermUser);
    }
    
    /**
     * 保存
     * @param permStr 权限串
     * @param lstPermissionUser 集合数据
     */
    public void deleteAndSave(String permStr, List<PermUser> lstPermUser) {
        // 先删除
        this.deleteByPermStr(permStr);
        // 再保存
        this.save(lstPermUser);
    }
    
    /**
     * 单个添加（不删除）
     * @param permStr 权限串
     * @param lstPermissionUser 集合数据
     */
    public void addAndSave(String permStr, User user) {
        List<String> permStrings = permUserDao.findByUserId(user.getUserId());
        // 没有才添加
        if (permStrings == null || !permStrings.contains(permStr)) {
            permUserDao.save(new PermUser(permStr, user));
        }
    }
    
    /**
     * 删除某一个permStr的数据
     * @param permStr permStr
     */
    private void deleteByPermStr(String permStr) {
        permUserDao.deleteByPermStr(permStr);
    }
    
    /**
     * 查询所有
     * @return 查询集合
     */
    @Transactional(readOnly = true)
    public List<PermUser> findAll() {
        return Lists.newArrayList(permUserDao.findAll());
    }
}
